package model

// NodeType 节点类型定义表
type NodeType struct {
	BaseModel          // 继承公共字段
	TypeName    string `gorm:"column:TYPE_NAME;unique;not null;size:50;comment:节点类型标识（英文，如person/wechat）" json:"type_name"`
	DisplayName string `gorm:"column:DISPLAY_NAME;not null;size:100;comment:节点类型显示名（如人员/微信账号）" json:"display_name"`
	Description string `gorm:"column:DESCRIPTION;size:500;comment:节点类型描述" json:"description,omitempty"`
	Icon        string `gorm:"column:ICON;size:255;" json:"icon,omitempty"`
}

func (NodeType) TableName() string {
	return "NODE_TYPES"
}

type NodeAttribute struct {
	BaseModel             // 继承ID（INT类型）
	NodeTypeID   int      `gorm:"column:NODE_TYPE_ID;type:INT;not null;index;comment:关联节点类型ID" json:"node_type_id"`
	AttrName     string   `gorm:"column:ATTR_NAME;not null;size:50;comment:属性标识（英文）" json:"attr_name"`
	DisplayName  string   `gorm:"column:DISPLAY_NAME;not null;size:100;comment:属性显示名" json:"display_name"`
	DataType     string   `gorm:"column:DATA_TYPE;not null;size:20;comment:数据类型（string/int等）" json:"data_type"`
	CalcRule     CalcRule `gorm:"column:CALC_RULE;type:TEXT;comment:计算规则（JSON格式）" json:"calc_rule,omitempty"`
	IsRequired   int      `gorm:"column:IS_REQUIRED;type:INT;default:0;comment:是否必填（0=否，1=是）" json:"is_required"`
	DefaultValue string   `gorm:"column:DEFAULT_VALUE;size:200;comment:默认值" json:"default_value,omitempty"`
	SortOrder    int      `gorm:"column:SORT_ORDER;type:INT;default:0;comment:显示排序" json:"sort_order"`
}

func (NodeAttribute) TableName() string {
	return "NODE_ATTRIBUTES"
}
